#include "file_read.h"

/**
 * @brief 安全地读取文件内容
 * @param file_path 文件完整路径
 * @return 成功返回指向文件内容的指针（需调用者free），失败返回NULL
 */
char * read_file_content(const char * file_path)
{
    printf("Trying to open: %s\n", file_path);
    FILE * file = fopen(file_path, "r"); // 以只读模式打开文件
    if(file == NULL) {
        printf("%d\n",__LINE__);
        printf("fopen failed\n"); // 打印错误信息
        printf("Error: %s\n", strerror(errno));
        return NULL;
    }
    printf("%d\n",__LINE__);
    // 获取文件大小
    fseek(file, 0, SEEK_END);
    long file_size = ftell(file);
    fseek(file, 0, SEEK_SET);

    // 分配内存（+1 用于字符串结束符 '\0'）
    char * content = (char *)malloc(file_size + 1);
    if(content == NULL) {
        printf("malloc fail_read fail\n");
        fclose(file);
        return NULL;
    } else
        printf("malloc fail_read success\n");

    // 读取文件内容
    size_t bytes_read   = fread(content, 1, file_size, file);
    content[bytes_read] = '\0'; // 添加字符串结束符

    fclose(file);
    return content;
}